查看原文
其他

逆向分析LOL网吧特权原理,全英雄+全皮肤400余种!

苏苏苏苏苏苏 看雪学院 2019-05-25

最近再玩LOL,看到有人在卖网吧特权,然后买过来分析了一下。


这个软件是易语言写的,我真的不敢相信,易语言可以写出这么好看的UI,醉了。


废话不多说,开启特权,然后进游戏。‘






很吊很吊,小白操作,而且进游戏就有,测试完毕,下面进入主题。


今天要做的2件事:


  • 1.探寻原理,模仿制作

  • 2.尝试逆向破解

首先我们做第一项。


这个软件分为2快,第一块是验证程序,第二块就是qqwb_client目录里的QQ网吧客户端。




首先我们查一下软件启动后都干了些什么事。


1. 软件采用UPX的壳,不解释,盘他,脱干净之后干。

UPX0:00401000 ;

UPX0:00401000 ; +-------------------------------------------------------------------------+

UPX0:00401000 ; |   This file has been generated by The Interactive Disassembler (IDA)    |

UPX0:00401000 ; |           Copyright (c) 2017 Hex-Rays, <support@hex-rays.com>           |

UPX0:00401000 ; |                      License info: 48-3FBD-7F04-2C                      |

UPX0:00401000 ; |                      Jiang Ying, Personal license                       |

UPX0:00401000 ; +-------------------------------------------------------------------------+

UPX0:00401000 ;

UPX0:00401000 ; Input SHA256 : 066110744AE7AC7CEA6934AEF5E1C9EC94C01653332B06A9D570F1A78EF2D4CE

UPX0:00401000 ; Input MD5    : 287CC0615662A15F6FF16E9CAF9BE432

UPX0:00401000 ; Input CRC32  : 801BB6D7

UPX0:00401000

UPX0:00401000 ; File Name   : C:\Users\苏苏苏苏苏苏\Desktop\新建文件夹 (2)\cooper\Cooper1.exe

UPX0:00401000 ; Format      : Portable executable for 80386 (PE)

UPX0:00401000 ; Imagebase   : 400000

UPX0:00401000 ; Timestamp   : 059BFFA3 (Mon Dec 25 05:33:23 1972)

UPX0:00401000 ; Section 1. (virtual address 00001000)

UPX0:00401000 ; Virtual size                  : 001B7000 (1798144.)

UPX0:00401000 ; Section size in file          : 00000000 (      0.)

UPX0:00401000 ; Offset to raw data for section: 00000400




{

 const CHAR *v0; // eax

 HMODULE v1; // eax

 LSTATUS v2; // ST14_4

 CHAR *v3; // ebx

 const CHAR *v4; // eax

 FARPROC v5; // eax

 void (__cdecl *v6)(signed int); // eax

 DWORD cbData; // [esp+8h] [ebp-110h]

 HKEY phkResult; // [esp+Ch] [ebp-10Ch]

 HMODULE hLibModule; // [esp+10h] [ebp-108h]

 CHAR String1[260]; // [esp+14h] [ebp-104h]



 sub_4011E4(String1);

 v0 = lstrcatA(String1, "krnln.fnr");

 v1 = LoadLibraryA(v0);

 if ( v1 )

   goto LABEL_15;

 if ( !RegOpenKeyExA(HKEY_CURRENT_USER, "Software\\FlySky\\E\\Install", 0, 0x20019u, &phkResult) )

 {

   cbData = 259;

   v2 = RegQueryValueExA(phkResult, "Path", 0, 0, (LPBYTE)String1, &cbData);

   RegCloseKey(phkResult);

   if ( !v2 )

   {

     v3 = &String1[lstrlenA(String1) - 1];

     if ( *v3 != 92 )

       *(_WORD *)v3 = 92;

     v4 = lstrcatA(String1, "krnln.fne");

     v1 = LoadLibraryA(v4);

     if ( v1 )

     {

LABEL_15:

       hLibModule = v1;

       v5 = GetProcAddress(v1, "GetNewSock");

       if ( v5 )

       {

         v6 = (void (__cdecl *)(signed int))((int (__stdcall *)(signed int))v5)(1000);

         if ( v6 )

         {

           v6(4206592);

           ExitProcess(0);

         }

       }

       FreeLibrary(hLibModule);

     }

   }

 }

 MessageBoxA(0, "Not found the kernel library or the kernel library is invalid!", "Error", 0x10u);

 return -1;

}


软件的会先加载一个易语言的动态链接库,这个作者采用的是易语言的编译,非静态编译或独立编译。


软件启动后,执行完上面代码,然后会获取本机MAC地址做为登陆账号,然后向服务器发送套接字,服务器会返回一个登陆成功的状态,状态值为100,还会返回一个TickCount,并且把TickCount转换格式。



{"msg":"100","ip":"192.168.3.5","account":"kfP8n6rGpVC2Z+/RLK8U5tRpaw1gaC/6e6HCd1m0IIhGSzxkmG8lHhx37HabnzuHn+84ZMmdN6lKcgvLgHF69Yi8KFQLNVFjiuiwFhvVBVk=","plugin":"11001","socks":"12001","endtime":"1549426581"}

软件接收到以上返回信息,代表登陆成功了,笔者发现这个验证可以很简单的破解,后者比前者要简单的多,但是笔者还是想弄清楚这个软件是如何实现网吧特权的,所以继续探寻原理。


软件运行后接收到服务器登陆成功未到期的消息后会创建进程,创建什么进程呢?是qqwb_client.exe这个。


然后我HOOK了 软件的 Read Write 函数看下他有没有对 qqwb_client.exe 的内存写入或读取什么东西,发现并没有。’


然后我看了下 Q网吧客户端的目录,发现一个非常可疑的模块 privilege_mgr.dll。


其他模块都有腾讯的签名,唯独他没有,而且他加载到 qqwb_client.exe 里面后抹掉了的PE头 ,并且断链(改写LDR),在PChunter里可以看到红名模块。



然后笔者心里有种感觉,这个模块起着非常重要的作用,于是dump下来,脱进IDA,干!


依旧是UPX的壳,脱之!



DLL进入后会执行HOOK,HOOK了哪里呢?经过追踪发现,他HOOK了Sendto函数头,直接ret 0018,让QQ网吧客户端无法调用SendTo。



到这里,大概可以分析出他的流程了,应该是截取QQ网吧客户端要发送的套接字,然后申请内存,把数据保存下来,发送给登陆程序,登陆程序加以修改,再向QQ网吧服务器发送套接字,这是我的猜测,是不是这样,还要等待我下一步证实。



这个DLL通过SendMessage的方式向登陆程序发送消息,如果登陆窗口死了或这不在了,QQ网吧客户端也就自动关闭了。


接下来我们看看套接字里到底有什么东西。






我们发现,登陆程序登陆成功后向QQ网吧服务器POST了一些数据,这些数据是什么数据呢,又是哪里来的呢?


下面继续一探究竟。


1.关闭QQ网吧只开软件->进入游戏没有特权;

2.只开QQ网吧客户端->关闭软件 进入游戏依旧没有特权。


以上2条结论说明,QQ网吧客户端里的那个DLL负责截获一些数据发送给登陆程序,登陆程序加以修整后POST提交到腾讯服务器。


原理已经弄清楚,如果实行起来,我不知道又要搞到猴年马月了,下面尝试破解。


继续上面的图 第一个GET 然后两个POST。


第一个GET 获取当前版本信息,如果是当前版本,则正常运行,不是的话则打开返回数据里面新的软件下载链接。


返回数据如下 :

{"version":"1.7.0.113","update":"https://www.lanzous.com/i2vmctg"}

我们目前又2个办法破解 。


1:OD 直接JMP完事简单方便


2:另类DIY方法(我们今天弄DIY哈哈)


我们直接HEX反汇编,搜索文本 43.248.201.175 找到他服务器的字符串加以修改。



这个是他服务器的IP地址,我们来改成我们自己的。



哈哈,成功,提示有新版本了,我们把后面的也改一下。



伪造一个php文件,让他返回版本信息。



哈哈成功!这个验证,应该是作者自己写的,一点防破解都没有,而且数据不加校验。


只要服务器登陆过你的MAC就可以一直用了,到期了也没事,自己改自己服务器。


然后要用特权的时候,POST一下他的服务器 http://43.248.201.175:15300/speed/cp?mac=你的MAC 就行了。


脱了壳之后想怎么DIY就怎么DIY哈哈,改改标题,改改按钮,改改LOGO,然后再加个验证壳又可以赚一笔了。


笔者只是想分析软件,分析原理,今天就到这吧,写的有点累了,大家又没有好看的电影推荐啊,帮忙推荐下,最近很无聊!



- End -


看雪ID:苏苏苏苏苏苏               

https://bbs.pediy.com/user-773537.htm


本文由看雪论坛 苏苏苏苏苏苏 原创

转载请注明来自看雪社区




热门图书推荐:

立即购买!



征题正在火热进行中!

(晋级赛Q1即将于3月10日开启,敬请期待!)




热门文章阅读


1、尝试着实现了一个 ART Hook

2、使用模拟器进行x64驱动的Safengine脱壳+导入表修复

3、FPS网络游戏自动瞄准漏洞分析以及实现

4、Linux0.11共享内存机制




热门课程推荐












公众号ID:ikanxue

官方微博:看雪安全

商务合作:wsc@kanxue.com


点击下方“阅读原文”

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存